1. The Field of the Invention
The present invention relates to the field of computing systems and, more particularly, to methods, systems and computer program products for creating database structures and for storing data in a database in response to adornments associated with data types, particularly .Net datatypes.
2. Background and Relevant Art
There are many different systems and tools that can be used to store data. Data storage can include, for example, the use of database tools that are configured to enable a programmer to select different types of database structures for storing data based on perceived needs. One such tool includes Access, although others also exist, which stores data according to a Jet SQL database. It will be appreciated, however, that notwithstanding this example, various other types of data storage tools exist for many different types of relational databases.
One problem with existing database tools, however, is that they require programmers to have a relatively sophisticated knowledge about databases and how the database should be created and organized in order to provide the best known performance for the specific implementation they are being created for. For example, a programmer will need to identify the different types of tables, allocated memory and other storage structures to be provided for the database.
However, inasmuch as the needs for stored data can fluctuate, the existing paradigm for creating database structures is somewhat limited. In particular, the creation of databases based on the known needs for storing the data and a programmers limited knowledge about how to best serve those needs, might unduly restrict the use of the database and prevent the database from being easily customized to serve different needs in the future.
In particular, a database may be needed to store different types of data from different systems that are not previously known or compatible with the established database at the time the database is created. The established database structures may also need to provide flexibility to be used for different types of relational databases, besides just SQL. Existing techniques, however, do not provide this flexibility without having to rewrite the monolithic code defining the database.
Yet another problem encountered with storing objects into relational databases is the difficultly for programmers to translate class hierarchies while storing the objects into the relational databases and in such a way as to not negatively affect the performance of the storage when the data objects are accessed at a later time. For example, if many different types of classes correspond to the same base class, it may not make sense to store each of the separate classes in a single monolithic database structure. Likewise, it may not make sense to store each of the separate classes entirely separately in different structures. Both of these examples can create inefficiency problems during subsequent querying of the data.
Accordingly, what is needed is a generic way to store arbitrary data structures and to retrieve them on demand and without a fundamental dependence on the underlying structure of the data store.